/* eslint-disable no-continue */
/* eslint-disable no-unused-vars */
/*
  FileReader接口的方法:
  readAsBinaryString file 将文件读取为二进制编码
  readAsText file, [encoding] 将文件读取为文本
  readAsDataURL file 将文件读取为DataURL
  abort(none) 终端读取操作
  无论读取成功或失败， 方法并不会返回读取结果， 这一结果存储在result属性中。

  FileReader接口的事件（ 出自《 HTML5学习之FileReader接口》）
  事件 描述
  onabort 中断
  onerror 出错
  onloadstart 开始
  onprogress 正在读取
  onload 成功读取
  onloadend 读取完成， 无论成功失败
*/

/**
 * base64转Blob
 * @param el <input type="file"/>
 * @returns {Blob}
 */

export const readFile = el => {
  const file = el.files[0]
  // 创建读取文件的对象
  const reader = new FileReader()
  // 创建文件读取相关的变量
  let imgFile
  // 为文件读取成功设置事件
  reader.onload = function (e) {
    imgFile = e.target.result
    // $("#imgContent").attr('src', imgFile); 展示
  }
  // 正式读取文件  读取成功则执行 onload 方法
  reader.readAsDataURL(file)
}


export function dataURLtoBlob(dataurl) {
  const arr = dataurl.split(','); const mime = arr[0].match(/:(.*?);/)[1]
  const bstr = atob(arr[1]); let n = bstr.length; const
    u8arr = new Uint8Array(n)
  while (n--) {
    u8arr[n] = bstr.charCodeAt(n)
  }
  return new Blob([u8arr], { type: mime })
}
export function dataURLtoFile(dataurl, filename) {
  const arr = dataurl.split(','); const mime = arr[0].match(/:(.*?);/)[1]
  const bstr = atob(arr[1]); let n = bstr.length; const
    u8arr = new Uint8Array(n)
  while (n--) {
    u8arr[n] = bstr.charCodeAt(n)
  }
  return new File([u8arr], filename, { type: mime })
}
// test:
// var blob = dataURLtoBlob('data:text/plain;base64,YWFhYWFhYQ==');
// var file = dataURLtoFile('data:text/plain;base64,YWFhYWFhYQ==', 'test.txt');


/**
 * 将请求的参数转换为 form data
 * @param params
 * @returns {FormData}
 */
export const paramsToFormData = (params) => {
  const formData = new FormData()
  for (const k in params) {
    if (params[k] === undefined) {
      continue
    }
    formData.append(k, params[k])
  }
  return formData
}

export function downloadUrl(url) {
  const aLink = document.createElement('a')
  aLink.download = url
  aLink.href = window.URL.createObjectURL()
  aLink.click()
}
